<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>refl-cpp: refl::util Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">refl-cpp
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('namespacerefl_1_1util.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">refl::util Namespace Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Contains utility types and functions for working with those types.  
<a href="namespacerefl_1_1util.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a compile-time string.  <a href="structrefl_1_1util_1_1const__string.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a compile-time list of types provided as variadic template parameters.  <a href="structrefl_1_1util_1_1type__list.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrefl_1_1util_1_1type__list_3_01_t_01_4.html">type_list&lt; T &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ae902b69e9d164cdf4b6ba5c76eed1825"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae902b69e9d164cdf4b6ba5c76eed1825"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ae902b69e9d164cdf4b6ba5c76eed1825">type_tag</a> = <a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; T &gt;</td></tr>
<tr class="separator:ae902b69e9d164cdf4b6ba5c76eed1825"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a4902f2250ab00bb4884b348893fb7641"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; 0 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a4902f2250ab00bb4884b348893fb7641">make_const_string</a> () noexcept</td></tr>
<tr class="memdesc:a4902f2250ab00bb4884b348893fb7641"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an empty instance of const_string&lt;N&gt;  <a href="namespacerefl_1_1util.html#a4902f2250ab00bb4884b348893fb7641">More...</a><br /></td></tr>
<tr class="separator:a4902f2250ab00bb4884b348893fb7641"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad79e9e7d64a8511211dc01f0b74e4e17"><td class="memTemplParams" colspan="2">template&lt;size_t N&gt; </td></tr>
<tr class="memitem:ad79e9e7d64a8511211dc01f0b74e4e17"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N - 1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ad79e9e7d64a8511211dc01f0b74e4e17">make_const_string</a> (const char(&amp;str)[N]) noexcept</td></tr>
<tr class="memdesc:ad79e9e7d64a8511211dc01f0b74e4e17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an instance of const_string&lt;N&gt;  <a href="namespacerefl_1_1util.html#ad79e9e7d64a8511211dc01f0b74e4e17">More...</a><br /></td></tr>
<tr class="separator:ad79e9e7d64a8511211dc01f0b74e4e17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af82b6c46a048b294ba533f7552d59bbf"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; 1 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#af82b6c46a048b294ba533f7552d59bbf">make_const_string</a> (char ch) noexcept</td></tr>
<tr class="memdesc:af82b6c46a048b294ba533f7552d59bbf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an instance of const_string&lt;N&gt;  <a href="namespacerefl_1_1util.html#af82b6c46a048b294ba533f7552d59bbf">More...</a><br /></td></tr>
<tr class="separator:af82b6c46a048b294ba533f7552d59bbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb53039f8928d4e4a207407a865034f0"><td class="memTemplParams" colspan="2">template&lt;size_t N, size_t M&gt; </td></tr>
<tr class="memitem:aeb53039f8928d4e4a207407a865034f0"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N+M &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#aeb53039f8928d4e4a207407a865034f0">operator+</a> (const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;a, const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;b) noexcept</td></tr>
<tr class="memdesc:aeb53039f8928d4e4a207407a865034f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates two const_strings together.  <a href="namespacerefl_1_1util.html#aeb53039f8928d4e4a207407a865034f0">More...</a><br /></td></tr>
<tr class="separator:aeb53039f8928d4e4a207407a865034f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa16ab2db12eb07f30ea39f2d94787486"><td class="memTemplParams" colspan="2">template&lt;size_t N, size_t M&gt; </td></tr>
<tr class="memitem:aa16ab2db12eb07f30ea39f2d94787486"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N+M - 1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#aa16ab2db12eb07f30ea39f2d94787486">operator+</a> (const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;a, const char(&amp;b)[M]) noexcept</td></tr>
<tr class="memdesc:aa16ab2db12eb07f30ea39f2d94787486"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> with a C-style string.  <a href="namespacerefl_1_1util.html#aa16ab2db12eb07f30ea39f2d94787486">More...</a><br /></td></tr>
<tr class="separator:aa16ab2db12eb07f30ea39f2d94787486"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a199ad5af9e6ac09eba8eaa6a159b8209"><td class="memTemplParams" colspan="2">template&lt;size_t N, size_t M&gt; </td></tr>
<tr class="memitem:a199ad5af9e6ac09eba8eaa6a159b8209"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N+M - 1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a199ad5af9e6ac09eba8eaa6a159b8209">operator+</a> (const char(&amp;a)[N], const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;b) noexcept</td></tr>
<tr class="memdesc:a199ad5af9e6ac09eba8eaa6a159b8209"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates a C-style string with a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a>.  <a href="namespacerefl_1_1util.html#a199ad5af9e6ac09eba8eaa6a159b8209">More...</a><br /></td></tr>
<tr class="separator:a199ad5af9e6ac09eba8eaa6a159b8209"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0b3daa04427017785fc8f2c793837af"><td class="memTemplParams" colspan="2">template&lt;size_t N, size_t M&gt; </td></tr>
<tr class="memitem:ae0b3daa04427017785fc8f2c793837af"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ae0b3daa04427017785fc8f2c793837af">operator==</a> (const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;a, const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;b) noexcept</td></tr>
<tr class="memdesc:ae0b3daa04427017785fc8f2c793837af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares two const_strings for equality.  <a href="namespacerefl_1_1util.html#ae0b3daa04427017785fc8f2c793837af">More...</a><br /></td></tr>
<tr class="separator:ae0b3daa04427017785fc8f2c793837af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44df4cd5b930d0ee80b2830097f213d7"><td class="memTemplParams" colspan="2">template&lt;size_t N, size_t M&gt; </td></tr>
<tr class="memitem:a44df4cd5b930d0ee80b2830097f213d7"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a44df4cd5b930d0ee80b2830097f213d7">operator!=</a> (const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;a, const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;b) noexcept</td></tr>
<tr class="memdesc:a44df4cd5b930d0ee80b2830097f213d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares two const_strings for equality.  <a href="namespacerefl_1_1util.html#a44df4cd5b930d0ee80b2830097f213d7">More...</a><br /></td></tr>
<tr class="separator:a44df4cd5b930d0ee80b2830097f213d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ca109d4c938be71f874a416712ddcc6"><td class="memTemplParams" colspan="2">template&lt;size_t N, size_t M&gt; </td></tr>
<tr class="memitem:a7ca109d4c938be71f874a416712ddcc6"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a7ca109d4c938be71f874a416712ddcc6">operator==</a> (const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;a, const char(&amp;b)[M]) noexcept</td></tr>
<tr class="memdesc:a7ca109d4c938be71f874a416712ddcc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> with a C-style string for equality.  <a href="namespacerefl_1_1util.html#a7ca109d4c938be71f874a416712ddcc6">More...</a><br /></td></tr>
<tr class="separator:a7ca109d4c938be71f874a416712ddcc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28729c6245c3fec57d783ee3eb5dc6cd"><td class="memTemplParams" colspan="2">template&lt;size_t N, size_t M&gt; </td></tr>
<tr class="memitem:a28729c6245c3fec57d783ee3eb5dc6cd"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a28729c6245c3fec57d783ee3eb5dc6cd">operator!=</a> (const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;a, const char(&amp;b)[M]) noexcept</td></tr>
<tr class="memdesc:a28729c6245c3fec57d783ee3eb5dc6cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> with a C-style string for equality.  <a href="namespacerefl_1_1util.html#a28729c6245c3fec57d783ee3eb5dc6cd">More...</a><br /></td></tr>
<tr class="separator:a28729c6245c3fec57d783ee3eb5dc6cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d84159539d36286560bb12d8bb96dc0"><td class="memTemplParams" colspan="2">template&lt;size_t N, size_t M&gt; </td></tr>
<tr class="memitem:a1d84159539d36286560bb12d8bb96dc0"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a1d84159539d36286560bb12d8bb96dc0">operator==</a> (const char(&amp;a)[N], const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;b) noexcept</td></tr>
<tr class="memdesc:a1d84159539d36286560bb12d8bb96dc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares a C-style string with a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> for equality.  <a href="namespacerefl_1_1util.html#a1d84159539d36286560bb12d8bb96dc0">More...</a><br /></td></tr>
<tr class="separator:a1d84159539d36286560bb12d8bb96dc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad1d1867818badb7888668e7756c76be"><td class="memTemplParams" colspan="2">template&lt;size_t N, size_t M&gt; </td></tr>
<tr class="memitem:aad1d1867818badb7888668e7756c76be"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#aad1d1867818badb7888668e7756c76be">operator!=</a> (const char(&amp;a)[N], const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;b) noexcept</td></tr>
<tr class="memdesc:aad1d1867818badb7888668e7756c76be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares a C-style string with a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> for equality.  <a href="namespacerefl_1_1util.html#aad1d1867818badb7888668e7756c76be">More...</a><br /></td></tr>
<tr class="separator:aad1d1867818badb7888668e7756c76be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f75b02aaddfc2beafcbf1fadedae865"><td class="memTemplParams" colspan="2">template&lt;size_t N&gt; </td></tr>
<tr class="memitem:a6f75b02aaddfc2beafcbf1fadedae865"><td class="memTemplItemLeft" align="right" valign="top">constexpr std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a6f75b02aaddfc2beafcbf1fadedae865">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;str) noexcept</td></tr>
<tr class="separator:a6f75b02aaddfc2beafcbf1fadedae865"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ddab8c6121c2ff87a0694fe48e62914"><td class="memTemplParams" colspan="2">template&lt;typename T  = int, typename... Ts&gt; </td></tr>
<tr class="memitem:a9ddab8c6121c2ff87a0694fe48e62914"><td class="memTemplItemLeft" align="right" valign="top">constexpr int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a9ddab8c6121c2ff87a0694fe48e62914">ignore</a> (Ts &amp;&amp;...) noexcept</td></tr>
<tr class="memdesc:a9ddab8c6121c2ff87a0694fe48e62914"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ignores all parameters.  <a href="namespacerefl_1_1util.html#a9ddab8c6121c2ff87a0694fe48e62914">More...</a><br /></td></tr>
<tr class="separator:a9ddab8c6121c2ff87a0694fe48e62914"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9940e0488744c7466f3410f6acce07b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa9940e0488744c7466f3410f6acce07b"><td class="memTemplItemLeft" align="right" valign="top">constexpr decltype(auto)&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#aa9940e0488744c7466f3410f6acce07b">identity</a> (T &amp;&amp;t) noexcept</td></tr>
<tr class="memdesc:aa9940e0488744c7466f3410f6acce07b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the input paratemeter as-is.  <a href="namespacerefl_1_1util.html#aa9940e0488744c7466f3410f6acce07b">More...</a><br /></td></tr>
<tr class="separator:aa9940e0488744c7466f3410f6acce07b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab419efb086dd5940b0f032810610e2fa"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab419efb086dd5940b0f032810610e2fa"><td class="memTemplItemLeft" align="right" valign="top">constexpr const T &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ab419efb086dd5940b0f032810610e2fa">make_const</a> (const T &amp;value) noexcept</td></tr>
<tr class="memdesc:ab419efb086dd5940b0f032810610e2fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds const to the input reference.  <a href="namespacerefl_1_1util.html#ab419efb086dd5940b0f032810610e2fa">More...</a><br /></td></tr>
<tr class="separator:ab419efb086dd5940b0f032810610e2fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5acb0bd0c244bac6c75250660d0f37bd"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a5acb0bd0c244bac6c75250660d0f37bd"><td class="memTemplItemLeft" align="right" valign="top">constexpr const T &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a5acb0bd0c244bac6c75250660d0f37bd">make_const</a> (T &amp;value) noexcept</td></tr>
<tr class="memdesc:a5acb0bd0c244bac6c75250660d0f37bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds const to the input reference.  <a href="namespacerefl_1_1util.html#a5acb0bd0c244bac6c75250660d0f37bd">More...</a><br /></td></tr>
<tr class="separator:a5acb0bd0c244bac6c75250660d0f37bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ebcdc8886ed6cf62bd914eb9566882a"><td class="memTemplParams" colspan="2">template&lt;typename T , typename... Ts&gt; </td></tr>
<tr class="memitem:a6ebcdc8886ed6cf62bd914eb9566882a"><td class="memTemplItemLeft" align="right" valign="top">constexpr std::array&lt; T, sizeof...(Ts)&gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a6ebcdc8886ed6cf62bd914eb9566882a">to_array</a> (const std::tuple&lt; Ts... &gt; &amp;tuple) noexcept</td></tr>
<tr class="memdesc:a6ebcdc8886ed6cf62bd914eb9566882a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an array of type 'T' from the provided tuple.  <a href="namespacerefl_1_1util.html#a6ebcdc8886ed6cf62bd914eb9566882a">More...</a><br /></td></tr>
<tr class="separator:a6ebcdc8886ed6cf62bd914eb9566882a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7db9918de2fd9e0d34caf4b6a5c1f77"><td class="memTemplParams" colspan="2">template&lt;typename T , size_t N&gt; </td></tr>
<tr class="memitem:af7db9918de2fd9e0d34caf4b6a5c1f77"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#af7db9918de2fd9e0d34caf4b6a5c1f77">to_tuple</a> (const std::array&lt; T, N &gt; &amp;array) noexcept</td></tr>
<tr class="memdesc:af7db9918de2fd9e0d34caf4b6a5c1f77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a tuple from the provided array.  <a href="namespacerefl_1_1util.html#af7db9918de2fd9e0d34caf4b6a5c1f77">More...</a><br /></td></tr>
<tr class="separator:af7db9918de2fd9e0d34caf4b6a5c1f77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2eef47de6755754bb8666bf61b118014"><td class="memTemplParams" colspan="2">template&lt;typename... Ts&gt; </td></tr>
<tr class="memitem:a2eef47de6755754bb8666bf61b118014"><td class="memTemplItemLeft" align="right" valign="top">constexpr std::tuple&lt; Ts... &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a2eef47de6755754bb8666bf61b118014">as_tuple</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;) noexcept</td></tr>
<tr class="memdesc:a2eef47de6755754bb8666bf61b118014"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a matching std::tuple from a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>.  <a href="namespacerefl_1_1util.html#a2eef47de6755754bb8666bf61b118014">More...</a><br /></td></tr>
<tr class="separator:a2eef47de6755754bb8666bf61b118014"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17fc91d7a4e148a502003f8ce4edeeef"><td class="memTemplParams" colspan="2">template&lt;typename... Ts&gt; </td></tr>
<tr class="memitem:a17fc91d7a4e148a502003f8ce4edeeef"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a17fc91d7a4e148a502003f8ce4edeeef">as_type_list</a> (const std::tuple&lt; Ts... &gt; &amp;) noexcept</td></tr>
<tr class="memdesc:a17fc91d7a4e148a502003f8ce4edeeef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a matching <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> from a std::tuple.  <a href="namespacerefl_1_1util.html#a17fc91d7a4e148a502003f8ce4edeeef">More...</a><br /></td></tr>
<tr class="separator:a17fc91d7a4e148a502003f8ce4edeeef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb5bb478ef1cc5966e9df7c9b10b5dd3"><td class="memTemplParams" colspan="2">template&lt;typename F , typename... Ts&gt; </td></tr>
<tr class="memitem:adb5bb478ef1cc5966e9df7c9b10b5dd3"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#adb5bb478ef1cc5966e9df7c9b10b5dd3">map_to_tuple</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt; list, F &amp;&amp;f)</td></tr>
<tr class="memdesc:adb5bb478ef1cc5966e9df7c9b10b5dd3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies function F to each type in the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>, aggregating the results in a tuple.  <a href="namespacerefl_1_1util.html#adb5bb478ef1cc5966e9df7c9b10b5dd3">More...</a><br /></td></tr>
<tr class="separator:adb5bb478ef1cc5966e9df7c9b10b5dd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af69ca2ba2b0353b7d3433f6a77b62902"><td class="memTemplParams" colspan="2">template&lt;typename T , typename F , typename... Ts&gt; </td></tr>
<tr class="memitem:af69ca2ba2b0353b7d3433f6a77b62902"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#af69ca2ba2b0353b7d3433f6a77b62902">map_to_array</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt; list, F &amp;&amp;f)</td></tr>
<tr class="memdesc:af69ca2ba2b0353b7d3433f6a77b62902"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies function F to each type in the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>, aggregating the results in an array.  <a href="namespacerefl_1_1util.html#af69ca2ba2b0353b7d3433f6a77b62902">More...</a><br /></td></tr>
<tr class="separator:af69ca2ba2b0353b7d3433f6a77b62902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19919596cdd45c858d891c91a7826b22"><td class="memTemplParams" colspan="2">template&lt;typename F , typename... Ts&gt; </td></tr>
<tr class="memitem:a19919596cdd45c858d891c91a7826b22"><td class="memTemplItemLeft" align="right" valign="top">constexpr void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a19919596cdd45c858d891c91a7826b22">for_each</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt; list, F &amp;&amp;f)</td></tr>
<tr class="memdesc:a19919596cdd45c858d891c91a7826b22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies function F to each type in the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>.  <a href="namespacerefl_1_1util.html#a19919596cdd45c858d891c91a7826b22">More...</a><br /></td></tr>
<tr class="separator:a19919596cdd45c858d891c91a7826b22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75e4295de1bf1350238fe01eb71d9cc1"><td class="memTemplParams" colspan="2">template&lt;typename R , typename F , typename T , typename... Ts&gt; </td></tr>
<tr class="memitem:a75e4295de1bf1350238fe01eb71d9cc1"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a75e4295de1bf1350238fe01eb71d9cc1">accumulate</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; T, Ts... &gt;, F &amp;&amp;f, R &amp;&amp;initial_value)</td></tr>
<tr class="separator:a75e4295de1bf1350238fe01eb71d9cc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea0417f0fd0129f2cf1ee5fa055d9c20"><td class="memTemplParams" colspan="2">template&lt;typename F , typename... Ts&gt; </td></tr>
<tr class="memitem:aea0417f0fd0129f2cf1ee5fa055d9c20"><td class="memTemplItemLeft" align="right" valign="top">constexpr size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#aea0417f0fd0129f2cf1ee5fa055d9c20">count_if</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt; list, F &amp;&amp;f)</td></tr>
<tr class="memdesc:aea0417f0fd0129f2cf1ee5fa055d9c20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Counts the number of times the predicate F returns true.  <a href="namespacerefl_1_1util.html#aea0417f0fd0129f2cf1ee5fa055d9c20">More...</a><br /></td></tr>
<tr class="separator:aea0417f0fd0129f2cf1ee5fa055d9c20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a097549e41bac7745db61442f94135c41"><td class="memTemplParams" colspan="2">template&lt;typename F , typename... Ts&gt; </td></tr>
<tr class="memitem:a097549e41bac7745db61442f94135c41"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a097549e41bac7745db61442f94135c41">filter</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt; list, F &amp;&amp;f)</td></tr>
<tr class="memdesc:a097549e41bac7745db61442f94135c41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filters the list according to a <em>constexpr</em> predicate.  <a href="namespacerefl_1_1util.html#a097549e41bac7745db61442f94135c41">More...</a><br /></td></tr>
<tr class="separator:a097549e41bac7745db61442f94135c41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1d30e9de0766352287491f18da067c0"><td class="memTemplParams" colspan="2">template&lt;typename F , typename... Ts&gt; </td></tr>
<tr class="memitem:ad1d30e9de0766352287491f18da067c0"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ad1d30e9de0766352287491f18da067c0">find_first</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt; list, F &amp;&amp;f)</td></tr>
<tr class="memdesc:ad1d30e9de0766352287491f18da067c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the first instance that matches the <em>constexpr</em> predicate.  <a href="namespacerefl_1_1util.html#ad1d30e9de0766352287491f18da067c0">More...</a><br /></td></tr>
<tr class="separator:ad1d30e9de0766352287491f18da067c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6685e65aeb830a5e27dc8e4f2085ce27"><td class="memTemplParams" colspan="2">template&lt;typename F , typename... Ts&gt; </td></tr>
<tr class="memitem:a6685e65aeb830a5e27dc8e4f2085ce27"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a6685e65aeb830a5e27dc8e4f2085ce27">find_one</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt; list, F &amp;&amp;f)</td></tr>
<tr class="memdesc:a6685e65aeb830a5e27dc8e4f2085ce27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the only instance that matches the <em>constexpr</em> predicate.  <a href="namespacerefl_1_1util.html#a6685e65aeb830a5e27dc8e4f2085ce27">More...</a><br /></td></tr>
<tr class="separator:a6685e65aeb830a5e27dc8e4f2085ce27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab78f978c331cb63b1450c0adbf093998"><td class="memTemplParams" colspan="2">template&lt;typename F , typename T , typename... Ts&gt; </td></tr>
<tr class="memitem:ab78f978c331cb63b1450c0adbf093998"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ab78f978c331cb63b1450c0adbf093998">contains</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; T, Ts... &gt; list, F &amp;&amp;f)</td></tr>
<tr class="memdesc:ab78f978c331cb63b1450c0adbf093998"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if any item in the list matches the predicate.  <a href="namespacerefl_1_1util.html#ab78f978c331cb63b1450c0adbf093998">More...</a><br /></td></tr>
<tr class="separator:ab78f978c331cb63b1450c0adbf093998"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbae658ac1fcf49ae57d8a20a3818ca1"><td class="memTemplParams" colspan="2">template&lt;typename T , typename... Ts&gt; </td></tr>
<tr class="memitem:adbae658ac1fcf49ae57d8a20a3818ca1"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#adbae658ac1fcf49ae57d8a20a3818ca1">contains</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;)</td></tr>
<tr class="memdesc:adbae658ac1fcf49ae57d8a20a3818ca1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> contains the specified type.  <a href="namespacerefl_1_1util.html#adbae658ac1fcf49ae57d8a20a3818ca1">More...</a><br /></td></tr>
<tr class="separator:adbae658ac1fcf49ae57d8a20a3818ca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3f02ce0f4526972a86b23ac8e98678f"><td class="memTemplParams" colspan="2">template&lt;typename T , typename... Ts&gt; </td></tr>
<tr class="memitem:ad3f02ce0f4526972a86b23ac8e98678f"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ad3f02ce0f4526972a86b23ac8e98678f">contains_base</a> (const std::tuple&lt; Ts... &gt; &amp;)</td></tr>
<tr class="memdesc:ad3f02ce0f4526972a86b23ac8e98678f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the tuple contains the specified type or a supertype.  <a href="namespacerefl_1_1util.html#ad3f02ce0f4526972a86b23ac8e98678f">More...</a><br /></td></tr>
<tr class="separator:ad3f02ce0f4526972a86b23ac8e98678f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43d13ecc025c0703aabde8c9489deb34"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename... &gt; typename T, typename... Ts&gt; </td></tr>
<tr class="memitem:a43d13ecc025c0703aabde8c9489deb34"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a43d13ecc025c0703aabde8c9489deb34">contains_instance</a> (const std::tuple&lt; Ts... &gt; &amp;)</td></tr>
<tr class="memdesc:a43d13ecc025c0703aabde8c9489deb34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the tuple contains an instance of the specified type.  <a href="namespacerefl_1_1util.html#a43d13ecc025c0703aabde8c9489deb34">More...</a><br /></td></tr>
<tr class="separator:a43d13ecc025c0703aabde8c9489deb34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5d05c1c63f4794ce67cbdd71f322ae6"><td class="memTemplParams" colspan="2">template&lt;typename... Ts, typename F &gt; </td></tr>
<tr class="memitem:ab5d05c1c63f4794ce67cbdd71f322ae6"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ab5d05c1c63f4794ce67cbdd71f322ae6">apply</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;, F &amp;&amp;f)</td></tr>
<tr class="memdesc:ab5d05c1c63f4794ce67cbdd71f322ae6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies a function to the elements of the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>.  <a href="namespacerefl_1_1util.html#ab5d05c1c63f4794ce67cbdd71f322ae6">More...</a><br /></td></tr>
<tr class="separator:ab5d05c1c63f4794ce67cbdd71f322ae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac73523bc0ad4428a1330ffa0d9b44cd8"><td class="memTemplParams" colspan="2">template&lt;size_t N, typename... Ts&gt; </td></tr>
<tr class="memitem:ac73523bc0ad4428a1330ffa0d9b44cd8"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ac73523bc0ad4428a1330ffa0d9b44cd8">get</a> (std::tuple&lt; Ts... &gt; &amp;ts) noexcept</td></tr>
<tr class="memdesc:ac73523bc0ad4428a1330ffa0d9b44cd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">A synonym for std::get&lt;N&gt;(tuple).  <a href="namespacerefl_1_1util.html#ac73523bc0ad4428a1330ffa0d9b44cd8">More...</a><br /></td></tr>
<tr class="separator:ac73523bc0ad4428a1330ffa0d9b44cd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbb5a84668172acdffcf557ec14061a9"><td class="memTemplParams" colspan="2">template&lt;size_t N, typename... Ts&gt; </td></tr>
<tr class="memitem:abbb5a84668172acdffcf557ec14061a9"><td class="memTemplItemLeft" align="right" valign="top">constexpr const auto &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#abbb5a84668172acdffcf557ec14061a9">get</a> (const std::tuple&lt; Ts... &gt; &amp;ts) noexcept</td></tr>
<tr class="memdesc:abbb5a84668172acdffcf557ec14061a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">A synonym for std::get&lt;N&gt;(tuple).  <a href="namespacerefl_1_1util.html#abbb5a84668172acdffcf557ec14061a9">More...</a><br /></td></tr>
<tr class="separator:abbb5a84668172acdffcf557ec14061a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fe94106718ac7824623d4dc7a19411c"><td class="memTemplParams" colspan="2">template&lt;typename T , typename... Ts&gt; </td></tr>
<tr class="memitem:a6fe94106718ac7824623d4dc7a19411c"><td class="memTemplItemLeft" align="right" valign="top">constexpr T &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a6fe94106718ac7824623d4dc7a19411c">get</a> (std::tuple&lt; Ts... &gt; &amp;ts) noexcept</td></tr>
<tr class="memdesc:a6fe94106718ac7824623d4dc7a19411c"><td class="mdescLeft">&#160;</td><td class="mdescRight">A synonym for std::get&lt;T&gt;(tuple).  <a href="namespacerefl_1_1util.html#a6fe94106718ac7824623d4dc7a19411c">More...</a><br /></td></tr>
<tr class="separator:a6fe94106718ac7824623d4dc7a19411c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a794423ed7e0729c701fc4fe32ff65f75"><td class="memTemplParams" colspan="2">template&lt;typename T , typename... Ts&gt; </td></tr>
<tr class="memitem:a794423ed7e0729c701fc4fe32ff65f75"><td class="memTemplItemLeft" align="right" valign="top">constexpr const T &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a794423ed7e0729c701fc4fe32ff65f75">get</a> (const std::tuple&lt; Ts... &gt; &amp;ts) noexcept</td></tr>
<tr class="memdesc:a794423ed7e0729c701fc4fe32ff65f75"><td class="mdescLeft">&#160;</td><td class="mdescRight">A synonym for std::get&lt;T&gt;(tuple).  <a href="namespacerefl_1_1util.html#a794423ed7e0729c701fc4fe32ff65f75">More...</a><br /></td></tr>
<tr class="separator:a794423ed7e0729c701fc4fe32ff65f75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0aec187f4a301c7f995ac65e17fa029a"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename... &gt; typename T, typename... Ts&gt; </td></tr>
<tr class="memitem:a0aec187f4a301c7f995ac65e17fa029a"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a0aec187f4a301c7f995ac65e17fa029a">get_instance</a> (std::tuple&lt; Ts... &gt; &amp;ts) noexcept</td></tr>
<tr class="memdesc:a0aec187f4a301c7f995ac65e17fa029a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of type U, where U is a template instance of T.  <a href="namespacerefl_1_1util.html#a0aec187f4a301c7f995ac65e17fa029a">More...</a><br /></td></tr>
<tr class="separator:a0aec187f4a301c7f995ac65e17fa029a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e49f043b54cb178073ff320e77eaee6"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename... &gt; typename T, typename... Ts&gt; </td></tr>
<tr class="memitem:a6e49f043b54cb178073ff320e77eaee6"><td class="memTemplItemLeft" align="right" valign="top">constexpr const auto &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a6e49f043b54cb178073ff320e77eaee6">get_instance</a> (const std::tuple&lt; Ts... &gt; &amp;ts) noexcept</td></tr>
<tr class="memdesc:a6e49f043b54cb178073ff320e77eaee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of type U, where U is a template instance of T.  <a href="namespacerefl_1_1util.html#a6e49f043b54cb178073ff320e77eaee6">More...</a><br /></td></tr>
<tr class="separator:a6e49f043b54cb178073ff320e77eaee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dfb7f94fdcfc69947d40143b3a07d65"><td class="memTemplParams" colspan="2">template&lt;typename... Ts&gt; </td></tr>
<tr class="memitem:a7dfb7f94fdcfc69947d40143b3a07d65"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; <a class="el" href="classrefl_1_1descriptor_1_1type__descriptor.html">descriptor::type_descriptor</a>&lt; Ts &gt;... &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65">reflect_types</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;) noexcept</td></tr>
<tr class="memdesc:a7dfb7f94fdcfc69947d40143b3a07d65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> of types to a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> of the type_descriptors for these types.  <a href="namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65">More...</a><br /></td></tr>
<tr class="separator:a7dfb7f94fdcfc69947d40143b3a07d65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad67a3c06ac31131661f1fb1cee670fbc"><td class="memTemplParams" colspan="2">template&lt;typename... Ts&gt; </td></tr>
<tr class="memitem:ad67a3c06ac31131661f1fb1cee670fbc"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerefl_1_1util.html#ad67a3c06ac31131661f1fb1cee670fbc">unreflect_types</a> (<a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; <a class="el" href="classrefl_1_1descriptor_1_1type__descriptor.html">descriptor::type_descriptor</a>&lt; Ts &gt;... &gt;) noexcept</td></tr>
<tr class="memdesc:ad67a3c06ac31131661f1fb1cee670fbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> of type_descriptors to a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> of the target types.  <a href="namespacerefl_1_1util.html#ad67a3c06ac31131661f1fb1cee670fbc">More...</a><br /></td></tr>
<tr class="separator:ad67a3c06ac31131661f1fb1cee670fbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Contains utility types and functions for working with those types. </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a id="ae902b69e9d164cdf4b6ba5c76eed1825"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae902b69e9d164cdf4b6ba5c76eed1825">&#9670;&nbsp;</a></span>type_tag</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="namespacerefl_1_1util.html#ae902b69e9d164cdf4b6ba5c76eed1825">refl::util::type_tag</a> = typedef <a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt;T&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a75e4295de1bf1350238fe01eb71d9cc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75e4295de1bf1350238fe01eb71d9cc1">&#9670;&nbsp;</a></span>accumulate()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename R , typename F , typename T , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto refl::util::accumulate </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; T, Ts... &gt;&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">R &amp;&amp;&#160;</td>
          <td class="paramname"><em>initial_value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ab5d05c1c63f4794ce67cbdd71f322ae6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5d05c1c63f4794ce67cbdd71f322ae6">&#9670;&nbsp;</a></span>apply()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename... Ts, typename F &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto refl::util::apply </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Applies a function to the elements of the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>. </p>
<div class="fragment"><div class="line"><a class="code" href="namespacerefl_1_1util.html#ab5d05c1c63f4794ce67cbdd71f322ae6">apply</a>(<a class="code" href="namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65">reflect_types</a>(type_list&lt;int, long, float&gt;{}), [](<span class="keyword">auto</span> td_int, <span class="keyword">auto</span> td_long, <span class="keyword">auto</span> td_float) {</div>
<div class="line">  <span class="keywordflow">return</span> <a class="code" href="namespacerefl_1_1descriptor.html#aff945ef69bf77ab1725a5a8d4c1fea98">get_name</a>(td_int) + <span class="stringliteral">&quot; &quot;</span> +<a class="code" href="namespacerefl_1_1descriptor.html#aff945ef69bf77ab1725a5a8d4c1fea98">get_name</a>(td_long) + <span class="stringliteral">&quot; &quot;</span> + <a class="code" href="namespacerefl_1_1descriptor.html#aff945ef69bf77ab1725a5a8d4c1fea98">get_name</a>(td_float);</div>
<div class="line">})</div>
<div class="line">  -&gt; <span class="stringliteral">&quot;int long float&quot;</span></div>
</div><!-- fragment --> 
</div>
</div>
<a id="a2eef47de6755754bb8666bf61b118014"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2eef47de6755754bb8666bf61b118014">&#9670;&nbsp;</a></span>as_tuple()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr std::tuple&lt;Ts...&gt; refl::util::as_tuple </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates a matching std::tuple from a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>. </p>
<p>Types in the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> must be Trivial. </p>

</div>
</div>
<a id="a17fc91d7a4e148a502003f8ce4edeeef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a17fc91d7a4e148a502003f8ce4edeeef">&#9670;&nbsp;</a></span>as_type_list()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr <a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt;Ts...&gt; refl::util::as_type_list </td>
          <td>(</td>
          <td class="paramtype">const std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates a matching <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> from a std::tuple. </p>

</div>
</div>
<a id="ab78f978c331cb63b1450c0adbf093998"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab78f978c331cb63b1450c0adbf093998">&#9670;&nbsp;</a></span>contains() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename F , typename T , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::contains </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; T, Ts... &gt;&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns true if any item in the list matches the predicate. </p>
<p>Calling f(Ts{})... should be valid in a constexpr context. </p>

</div>
</div>
<a id="adbae658ac1fcf49ae57d8a20a3818ca1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adbae658ac1fcf49ae57d8a20a3818ca1">&#9670;&nbsp;</a></span>contains() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::contains </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns true if the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> contains the specified type. </p>
<dl class="section see"><dt>See also</dt><dd>refl::trait::contains </dd></dl>

</div>
</div>
<a id="ad3f02ce0f4526972a86b23ac8e98678f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3f02ce0f4526972a86b23ac8e98678f">&#9670;&nbsp;</a></span>contains_base()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::contains_base </td>
          <td>(</td>
          <td class="paramtype">const std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns true if the tuple contains the specified type or a supertype. </p>
<dl class="section see"><dt>See also</dt><dd>refl::trait::contains_base </dd></dl>

</div>
</div>
<a id="a43d13ecc025c0703aabde8c9489deb34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43d13ecc025c0703aabde8c9489deb34">&#9670;&nbsp;</a></span>contains_instance()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename... &gt; typename T, typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::contains_instance </td>
          <td>(</td>
          <td class="paramtype">const std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns true if the tuple contains an instance of the specified type. </p>
<dl class="section see"><dt>See also</dt><dd>refl::trait::contains_instance </dd></dl>

</div>
</div>
<a id="aea0417f0fd0129f2cf1ee5fa055d9c20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea0417f0fd0129f2cf1ee5fa055d9c20">&#9670;&nbsp;</a></span>count_if()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename F , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr size_t refl::util::count_if </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Counts the number of times the predicate F returns true. </p>
<p>Note: Breaking changes introduced in v0.7.0: F can now no longer take a second index argument. </p>

</div>
</div>
<a id="a097549e41bac7745db61442f94135c41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a097549e41bac7745db61442f94135c41">&#9670;&nbsp;</a></span>filter()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename F , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto refl::util::filter </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Filters the list according to a <em>constexpr</em> predicate. </p>
<p>Calling f(Ts{})... should be valid in a constexpr context.</p>
<div class="fragment"><div class="line"><a class="code" href="namespacerefl_1_1util.html#a097549e41bac7745db61442f94135c41">filter</a>(<a class="code" href="namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65">reflect_types</a>(type_list&lt;int, long, float&gt;{}), [](<span class="keyword">auto</span> td) {</div>
<div class="line">  <span class="keywordflow">return</span> std::is_integral_v&lt;<span class="keyword">typename</span> decltype(td)::type&gt;;</div>
<div class="line">})</div>
<div class="line">  -&gt; type_list&lt;type_descriptor&lt;int&gt;, type_descriptor&lt;long&gt;&gt;</div>
</div><!-- fragment --> 
</div>
</div>
<a id="ad1d30e9de0766352287491f18da067c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1d30e9de0766352287491f18da067c0">&#9670;&nbsp;</a></span>find_first()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename F , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto refl::util::find_first </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the first instance that matches the <em>constexpr</em> predicate. </p>
<p>Calling f(Ts{})... should be valid in a constexpr context. </p>

</div>
</div>
<a id="a6685e65aeb830a5e27dc8e4f2085ce27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6685e65aeb830a5e27dc8e4f2085ce27">&#9670;&nbsp;</a></span>find_one()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename F , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto refl::util::find_one </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the only instance that matches the <em>constexpr</em> predicate. </p>
<p>If there is no match or multiple matches, fails with static_assert. Calling f(Ts{})... should be valid in a constexpr context. </p>

</div>
</div>
<a id="a19919596cdd45c858d891c91a7826b22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19919596cdd45c858d891c91a7826b22">&#9670;&nbsp;</a></span>for_each()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename F , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr void refl::util::for_each </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Applies function F to each type in the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>. </p>
<p>F can optionally take an index of type size_t.</p>
<div class="fragment"><div class="line"><a class="code" href="namespacerefl_1_1util.html#a19919596cdd45c858d891c91a7826b22">for_each</a>(<a class="code" href="namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65">reflect_types</a>(type_list&lt;int, float, double&gt;{}), [](<span class="keyword">auto</span> td) {</div>
<div class="line">  std::cout &lt;&lt; <a class="code" href="namespacerefl_1_1descriptor.html#aff945ef69bf77ab1725a5a8d4c1fea98">get_name</a>(td) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div>
<div class="line">});</div>
</div><!-- fragment --> 
</div>
</div>
<a id="abbb5a84668172acdffcf557ec14061a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbb5a84668172acdffcf557ec14061a9">&#9670;&nbsp;</a></span>get() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr const auto&amp; refl::util::get </td>
          <td>(</td>
          <td class="paramtype">const std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"><em>ts</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>A synonym for std::get&lt;N&gt;(tuple). </p>

</div>
</div>
<a id="a794423ed7e0729c701fc4fe32ff65f75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a794423ed7e0729c701fc4fe32ff65f75">&#9670;&nbsp;</a></span>get() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr const T&amp; refl::util::get </td>
          <td>(</td>
          <td class="paramtype">const std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"><em>ts</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>A synonym for std::get&lt;T&gt;(tuple). </p>

</div>
</div>
<a id="ac73523bc0ad4428a1330ffa0d9b44cd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac73523bc0ad4428a1330ffa0d9b44cd8">&#9670;&nbsp;</a></span>get() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto&amp; refl::util::get </td>
          <td>(</td>
          <td class="paramtype">std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"><em>ts</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>A synonym for std::get&lt;N&gt;(tuple). </p>

</div>
</div>
<a id="a6fe94106718ac7824623d4dc7a19411c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fe94106718ac7824623d4dc7a19411c">&#9670;&nbsp;</a></span>get() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr T&amp; refl::util::get </td>
          <td>(</td>
          <td class="paramtype">std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"><em>ts</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>A synonym for std::get&lt;T&gt;(tuple). </p>

</div>
</div>
<a id="a6e49f043b54cb178073ff320e77eaee6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e49f043b54cb178073ff320e77eaee6">&#9670;&nbsp;</a></span>get_instance() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename... &gt; typename T, typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr const auto&amp; refl::util::get_instance </td>
          <td>(</td>
          <td class="paramtype">const std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"><em>ts</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the value of type U, where U is a template instance of T. </p>

</div>
</div>
<a id="a0aec187f4a301c7f995ac65e17fa029a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0aec187f4a301c7f995ac65e17fa029a">&#9670;&nbsp;</a></span>get_instance() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;template&lt; typename... &gt; typename T, typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto&amp; refl::util::get_instance </td>
          <td>(</td>
          <td class="paramtype">std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"><em>ts</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the value of type U, where U is a template instance of T. </p>

</div>
</div>
<a id="aa9940e0488744c7466f3410f6acce07b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9940e0488744c7466f3410f6acce07b">&#9670;&nbsp;</a></span>identity()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr decltype(auto) refl::util::identity </td>
          <td>(</td>
          <td class="paramtype">T &amp;&amp;&#160;</td>
          <td class="paramname"><em>t</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the input paratemeter as-is. </p>
<p>Useful for expanding variadic template lists when only one arguments is known to be present. </p>

</div>
</div>
<a id="a9ddab8c6121c2ff87a0694fe48e62914"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ddab8c6121c2ff87a0694fe48e62914">&#9670;&nbsp;</a></span>ignore()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T  = int, typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr int refl::util::ignore </td>
          <td>(</td>
          <td class="paramtype">Ts &amp;&amp;&#160;</td>
          <td class="paramname"><em>...</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Ignores all parameters. </p>
<p>Can take an optional template parameter specifying the return type of ignore. The return object is iniailized by {}. </p>

</div>
</div>
<a id="ab419efb086dd5940b0f032810610e2fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab419efb086dd5940b0f032810610e2fa">&#9670;&nbsp;</a></span>make_const() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr const T&amp; refl::util::make_const </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Adds const to the input reference. </p>

</div>
</div>
<a id="a5acb0bd0c244bac6c75250660d0f37bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5acb0bd0c244bac6c75250660d0f37bd">&#9670;&nbsp;</a></span>make_const() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr const T&amp; refl::util::make_const </td>
          <td>(</td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Adds const to the input reference. </p>

</div>
</div>
<a id="a4902f2250ab00bb4884b348893fb7641"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4902f2250ab00bb4884b348893fb7641">&#9670;&nbsp;</a></span>make_const_string() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt;0&gt; refl::util::make_const_string </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates an empty instance of const_string&lt;N&gt; </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="af82b6c46a048b294ba533f7552d59bbf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af82b6c46a048b294ba533f7552d59bbf">&#9670;&nbsp;</a></span>make_const_string() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt;1&gt; refl::util::make_const_string </td>
          <td>(</td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>ch</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates an instance of const_string&lt;N&gt; </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="ad79e9e7d64a8511211dc01f0b74e4e17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad79e9e7d64a8511211dc01f0b74e4e17">&#9670;&nbsp;</a></span>make_const_string() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt;N - 1&gt; refl::util::make_const_string </td>
          <td>(</td>
          <td class="paramtype">const char(&amp;)&#160;</td>
          <td class="paramname"><em>str</em>[N]</td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates an instance of const_string&lt;N&gt; </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="af69ca2ba2b0353b7d3433f6a77b62902"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af69ca2ba2b0353b7d3433f6a77b62902">&#9670;&nbsp;</a></span>map_to_array()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename F , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto refl::util::map_to_array </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Applies function F to each type in the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>, aggregating the results in an array. </p>
<p>F can optionally take an index of type size_t.</p>
<div class="fragment"><div class="line">map_to_array&lt;std::string&gt;(<a class="code" href="namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65">reflect_types</a>(type_list&lt;int, float, double&gt;{}), [](<span class="keyword">auto</span> td) {</div>
<div class="line">  <span class="keywordflow">return</span> <a class="code" href="namespacerefl_1_1descriptor.html#aff945ef69bf77ab1725a5a8d4c1fea98">get_name</a>(td).str();</div>
<div class="line">})</div>
<div class="line">  -&gt; std::array{std::string{<span class="stringliteral">&quot;int&quot;</span>}, std::string{<span class="stringliteral">&quot;float&quot;</span>}, std::string{<span class="stringliteral">&quot;double&quot;</span>}}</div>
</div><!-- fragment --> 
</div>
</div>
<a id="adb5bb478ef1cc5966e9df7c9b10b5dd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb5bb478ef1cc5966e9df7c9b10b5dd3">&#9670;&nbsp;</a></span>map_to_tuple()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename F , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto refl::util::map_to_tuple </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Applies function F to each type in the <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a>, aggregating the results in a tuple. </p>
<p>F can optionally take an index of type size_t.</p>
<div class="fragment"><div class="line"><a class="code" href="namespacerefl_1_1util.html#adb5bb478ef1cc5966e9df7c9b10b5dd3">map_to_tuple</a>(<a class="code" href="namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65">reflect_types</a>(type_list&lt;int, float, double&gt;{}), [](<span class="keyword">auto</span> td) {</div>
<div class="line">  <span class="keywordflow">return</span> <a class="code" href="namespacerefl_1_1descriptor.html#aff945ef69bf77ab1725a5a8d4c1fea98">get_name</a>(td);</div>
<div class="line">})</div>
<div class="line">  -&gt; std::tuple{const_string{<span class="stringliteral">&quot;int&quot;</span>}, const_string{<span class="stringliteral">&quot;float&quot;</span>}, const_string{<span class="stringliteral">&quot;double&quot;</span>}}</div>
</div><!-- fragment --> 
</div>
</div>
<a id="aad1d1867818badb7888668e7756c76be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad1d1867818badb7888668e7756c76be">&#9670;&nbsp;</a></span>operator!=() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, size_t M&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::operator!= </td>
          <td>(</td>
          <td class="paramtype">const char(&amp;)&#160;</td>
          <td class="paramname"><em>a</em>[N], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compares a C-style string with a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> for equality. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="a28729c6245c3fec57d783ee3eb5dc6cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28729c6245c3fec57d783ee3eb5dc6cd">&#9670;&nbsp;</a></span>operator!=() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, size_t M&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::operator!= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char(&amp;)&#160;</td>
          <td class="paramname"><em>b</em>[M]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compares a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> with a C-style string for equality. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="a44df4cd5b930d0ee80b2830097f213d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44df4cd5b930d0ee80b2830097f213d7">&#9670;&nbsp;</a></span>operator!=() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, size_t M&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::operator!= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compares two const_strings for equality. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="a199ad5af9e6ac09eba8eaa6a159b8209"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a199ad5af9e6ac09eba8eaa6a159b8209">&#9670;&nbsp;</a></span>operator+() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, size_t M&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt;N + M - 1&gt; refl::util::operator+ </td>
          <td>(</td>
          <td class="paramtype">const char(&amp;)&#160;</td>
          <td class="paramname"><em>a</em>[N], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Concatenates a C-style string with a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a>. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="aa16ab2db12eb07f30ea39f2d94787486"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa16ab2db12eb07f30ea39f2d94787486">&#9670;&nbsp;</a></span>operator+() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, size_t M&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt;N + M - 1&gt; refl::util::operator+ </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char(&amp;)&#160;</td>
          <td class="paramname"><em>b</em>[M]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Concatenates a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> with a C-style string. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="aeb53039f8928d4e4a207407a865034f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb53039f8928d4e4a207407a865034f0">&#9670;&nbsp;</a></span>operator+() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, size_t M&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt;N + M&gt; refl::util::operator+ </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Concatenates two const_strings together. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="a6f75b02aaddfc2beafcbf1fadedae865"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f75b02aaddfc2beafcbf1fadedae865">&#9670;&nbsp;</a></span>operator&lt;&lt;()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr std::ostream&amp; refl::util::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;&#160;</td>
          <td class="paramname"><em>str</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a1d84159539d36286560bb12d8bb96dc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d84159539d36286560bb12d8bb96dc0">&#9670;&nbsp;</a></span>operator==() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, size_t M&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::operator== </td>
          <td>(</td>
          <td class="paramtype">const char(&amp;)&#160;</td>
          <td class="paramname"><em>a</em>[N], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compares a C-style string with a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> for equality. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="a7ca109d4c938be71f874a416712ddcc6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ca109d4c938be71f874a416712ddcc6">&#9670;&nbsp;</a></span>operator==() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, size_t M&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::operator== </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char(&amp;)&#160;</td>
          <td class="paramname"><em>b</em>[M]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compares a <a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">const_string</a> with a C-style string for equality. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="ae0b3daa04427017785fc8f2c793837af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0b3daa04427017785fc8f2c793837af">&#9670;&nbsp;</a></span>operator==() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;size_t N, size_t M&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool refl::util::operator== </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; N &gt; &amp;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structrefl_1_1util_1_1const__string.html">const_string</a>&lt; M &gt; &amp;&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compares two const_strings for equality. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="structrefl_1_1util_1_1const__string.html" title="Represents a compile-time string.">refl::util::const_string</a> </dd></dl>

</div>
</div>
<a id="a7dfb7f94fdcfc69947d40143b3a07d65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7dfb7f94fdcfc69947d40143b3a07d65">&#9670;&nbsp;</a></span>reflect_types()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr <a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt;<a class="el" href="classrefl_1_1descriptor_1_1type__descriptor.html">descriptor::type_descriptor</a>&lt;Ts&gt;...&gt; refl::util::reflect_types </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; Ts... &gt;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Converts a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> of types to a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> of the type_descriptors for these types. </p>
<div class="fragment"><div class="line"><a class="code" href="namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65">reflect_types</a>(type_list&lt;int, float&gt;{}) -&gt; type_list&lt;type_descriptor&lt;int&gt;, type_descriptor&lt;float&gt;&gt;{}</div>
</div><!-- fragment --> 
</div>
</div>
<a id="a6ebcdc8886ed6cf62bd914eb9566882a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ebcdc8886ed6cf62bd914eb9566882a">&#9670;&nbsp;</a></span>to_array()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr std::array&lt;T, sizeof...(Ts)&gt; refl::util::to_array </td>
          <td>(</td>
          <td class="paramtype">const std::tuple&lt; Ts... &gt; &amp;&#160;</td>
          <td class="paramname"><em>tuple</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates an array of type 'T' from the provided tuple. </p>
<p>The common type T needs to be specified, in order to prevent any errors when using the overload taking an empty std::tuple (as there is no common type then). </p>

</div>
</div>
<a id="af7db9918de2fd9e0d34caf4b6a5c1f77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7db9918de2fd9e0d34caf4b6a5c1f77">&#9670;&nbsp;</a></span>to_tuple()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , size_t N&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr auto refl::util::to_tuple </td>
          <td>(</td>
          <td class="paramtype">const std::array&lt; T, N &gt; &amp;&#160;</td>
          <td class="paramname"><em>array</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates a tuple from the provided array. </p>

</div>
</div>
<a id="ad67a3c06ac31131661f1fb1cee670fbc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad67a3c06ac31131661f1fb1cee670fbc">&#9670;&nbsp;</a></span>unreflect_types()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename... Ts&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr <a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt;Ts...&gt; refl::util::unreflect_types </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrefl_1_1util_1_1type__list.html">type_list</a>&lt; <a class="el" href="classrefl_1_1descriptor_1_1type__descriptor.html">descriptor::type_descriptor</a>&lt; Ts &gt;... &gt;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">constexpr</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Converts a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> of type_descriptors to a <a class="el" href="structrefl_1_1util_1_1type__list.html" title="Represents a compile-time list of types provided as variadic template parameters.">type_list</a> of the target types. </p>
<div class="fragment"><div class="line"><a class="code" href="namespacerefl_1_1util.html#ad67a3c06ac31131661f1fb1cee670fbc">unreflect_types</a>(type_list&lt;type_descriptor&lt;int&gt;, type_descriptor&lt;float&gt;&gt;{}) -&gt; type_list&lt;int, float&gt;{}</div>
</div><!-- fragment --> 
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="anamespacerefl_1_1util_html_ab5d05c1c63f4794ce67cbdd71f322ae6"><div class="ttname"><a href="namespacerefl_1_1util.html#ab5d05c1c63f4794ce67cbdd71f322ae6">refl::util::apply</a></div><div class="ttdeci">constexpr auto apply(type_list&lt; Ts... &gt;, F &amp;&amp;f)</div><div class="ttdoc">Applies a function to the elements of the type_list.</div><div class="ttdef"><b>Definition:</b> refl.hpp:1784</div></div>
<div class="ttc" id="anamespacerefl_1_1util_html_ad67a3c06ac31131661f1fb1cee670fbc"><div class="ttname"><a href="namespacerefl_1_1util.html#ad67a3c06ac31131661f1fb1cee670fbc">refl::util::unreflect_types</a></div><div class="ttdeci">constexpr type_list&lt; Ts... &gt; unreflect_types(type_list&lt; descriptor::type_descriptor&lt; Ts &gt;... &gt;) noexcept</div><div class="ttdoc">Converts a type_list of type_descriptors to a type_list of the target types.</div><div class="ttdef"><b>Definition:</b> refl.hpp:1856</div></div>
<div class="ttc" id="anamespacerefl_1_1util_html_a7dfb7f94fdcfc69947d40143b3a07d65"><div class="ttname"><a href="namespacerefl_1_1util.html#a7dfb7f94fdcfc69947d40143b3a07d65">refl::util::reflect_types</a></div><div class="ttdeci">constexpr type_list&lt; descriptor::type_descriptor&lt; Ts &gt;... &gt; reflect_types(type_list&lt; Ts... &gt;) noexcept</div><div class="ttdoc">Converts a type_list of types to a type_list of the type_descriptors for these types.</div><div class="ttdef"><b>Definition:</b> refl.hpp:1843</div></div>
<div class="ttc" id="anamespacerefl_1_1util_html_a097549e41bac7745db61442f94135c41"><div class="ttname"><a href="namespacerefl_1_1util.html#a097549e41bac7745db61442f94135c41">refl::util::filter</a></div><div class="ttdeci">constexpr auto filter(type_list&lt; Ts... &gt; list, F &amp;&amp;f)</div><div class="ttdoc">Filters the list according to a constexpr predicate.</div><div class="ttdef"><b>Definition:</b> refl.hpp:1701</div></div>
<div class="ttc" id="anamespacerefl_1_1util_html_adb5bb478ef1cc5966e9df7c9b10b5dd3"><div class="ttname"><a href="namespacerefl_1_1util.html#adb5bb478ef1cc5966e9df7c9b10b5dd3">refl::util::map_to_tuple</a></div><div class="ttdeci">constexpr auto map_to_tuple(type_list&lt; Ts... &gt; list, F &amp;&amp;f)</div><div class="ttdoc">Applies function F to each type in the type_list, aggregating the results in a tuple.</div><div class="ttdef"><b>Definition:</b> refl.hpp:1586</div></div>
<div class="ttc" id="anamespacerefl_1_1descriptor_html_aff945ef69bf77ab1725a5a8d4c1fea98"><div class="ttname"><a href="namespacerefl_1_1descriptor.html#aff945ef69bf77ab1725a5a8d4c1fea98">refl::descriptor::get_name</a></div><div class="ttdeci">constexpr auto get_name(Descriptor d) noexcept</div><div class="ttdoc">Returns the full name of the descriptor.</div><div class="ttdef"><b>Definition:</b> refl.hpp:2582</div></div>
<div class="ttc" id="anamespacerefl_1_1util_html_a19919596cdd45c858d891c91a7826b22"><div class="ttname"><a href="namespacerefl_1_1util.html#a19919596cdd45c858d891c91a7826b22">refl::util::for_each</a></div><div class="ttdeci">constexpr void for_each(type_list&lt; Ts... &gt; list, F &amp;&amp;f)</div><div class="ttdoc">Applies function F to each type in the type_list.</div><div class="ttdef"><b>Definition:</b> refl.hpp:1619</div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacerefl.html">refl</a></li><li class="navelem"><a class="el" href="namespacerefl_1_1util.html">util</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
